package com.relytosoft.mizar.media.camera.services.service;

import com.relytosoft.mizar.media.camera.api.entity.CameraBase;
import com.relytosoft.mizar.media.camera.api.entity.CameraChannel;
import com.relytosoft.mizar.media.camera.api.entity.CameraPlatform;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author lj
 * @date 2022/4/21 13:59
 */
public interface HkSyncService {

    /**
     * 查询设备类型名称和ID得关系
     *
     * @return 对应关系
     */
    Map<String, Integer> findCameraType();


    /**
     * 查询设备ID和三方编码对应关系
     *
     * @return 对应关系
     */
    Map<String, Integer> findCameraCode();

    /**
     * 根据状态类型获取本系统存储的所有三方平台编码
     *
     * @param type   类型
     * @param status 状态
     * @return 本系统编码
     */
    List<CameraPlatform> selectAllPlatformCode(Integer type, Integer status);

    /**
     * 批量插入相机基本数据
     *
     * @param cameraBaseList 相机列表
     * @return 是否成功
     */
    boolean batchInsertCameraBase(List<CameraBase> cameraBaseList);

    /**
     * 批量插入三方平台管理表
     *
     * @param cameraPlatformList 关联信息表
     * @return 是否成功
     */
    boolean batchInsertCameraPlatform(List<CameraPlatform> cameraPlatformList);

    /**
     * 批量插入设备通道信息
     *
     * @param cameraChannelList 通道信息
     * @return 是否成功
     */
    boolean batchInsertCameraChannel(List<CameraChannel> cameraChannelList);

    /**
     * 批量查询设备信息
     *
     * @param set 设备id集合
     * @return 设备信息
     */
    List<CameraBase> batchSelectByCameraIds(Set<Integer> set);


    /**
     * 批量更新设备基本信息
     *
     * @param cameraBaseList 设备列表
     * @return 是否成功
     */
    boolean batchUpdateCameraBase(List<CameraBase> cameraBaseList);


    /**
     * 批量查询通道信息
     *
     * @param set 通道id集合
     * @return 通道信息
     */
    List<CameraChannel> batchSelectByCameraChannelIds(Set<Integer> set);

    /**
     * 批量更新通道信息
     *
     * @param cameraChannelList 需要更新得数据
     * @return 是否成功
     */
    boolean batchUpdateCameraChannel(List<CameraChannel> cameraChannelList);


    /**
     * 查询需要同步的设备
     *
     * @return 设备信息
     */
    List<CameraBase> selectNeedSyncDevice();

}


